// pow
// 方法 1 迭代 不满足时间复杂度
var myPow = function (a, n) {
  if (n < 0) {
    a = 1 / a
    n = -n
  }
  let res = 1
  while (n) {
    if (n & 1) {
      res *= a
    }
    n >>= 1
    a *= a
  }
  return res
}

// let r = myPow(2, -3)

// console.log(r)

// 方法 2 二分法 分治思想 递归
var myPow = function (a, n) {
  if (n === 0) return 1
  if (n < 0) return 1 / myPow(a, -n)
  if (n & 1) return a * myPow(a, n - 1)
  return myPow(a * a, n / 2)
  // or
  // let r = myPow(a, n / 2)
  // return n & 1 ? r * r * a : r * r
}
